Skip Headers

Oracle® Database SQL Reference 10g Release 2 (10.2) Part Number B14200-02 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# XMLQUERY

Syntax

Description of the illustration XMLQuery.gif

XML_passing_clause::=

Description of the illustration XML_passing_clause.gif

Purpose

`XMLQUERY` lets you query XML data in SQL statements. It takes an XQuery expression as a string literal, an optional context item, and other bind variables and returns the result of evaluating the XQuery expression using these input values.

- `XQuery_string` is a complete XQuery expression, including prolog.

- The `expr` in the `XML_passing_clause` is an expression returning an `XMLType` that is used as the context for evaluating the XQuery expression. You can specify only one `expr` in the `PASSING` clause without an identifier. The result of evaluating each `expr` is bound to the corresponding identifier in the `XQuery_string`. If any `expr` that is not followed by an `AS` clause, then the result of evaluating that expression is used as the context item for evaluating the `XQuery_string`.

- `RETURNING` `CONTENT` indicates that the result from the XQuery evaluation is either an XML 1.0 document or a document fragment conforming to the XML 1.0 semantics.

See Also: Oracle XML DB Developer's Guide for more information on this function

Examples

The following statement specifies the `warehouse_spec` column of the `oe.warehouses` table in the `XML_passing_clause` as a context item. The statement returns specific information about the warehouses with area greater than 50K.

    SELECT warehouse_name,
    EXTRACTVALUE(warehouse_spec, '/Warehouse/Area'),
    XMLQuery(
       'for $i in /Warehouse
       where $i/Area > 50000
       return <Details>
                 <Docks num="{$i/Docks}"/>
                 <Rail>
                   {
                   if ($i/RailAccess = "Y") then "true" else "false"
                   }
                 </Rail>
              </Details>' PASSING warehouse_spec RETURNING CONTENT) "Big_warehouses"
       FROM warehouses;

    WAREHOUSE_ID Area      Big_warehouses
    ------------ --------- --------------------------------------------------------
               1     25000
               2     50000
               3     85700 <Details><Docks></Docks><Rail>false</Rail></Details>
               4    103000 <Details><Docks num="3"></Docks><Rail>true</Rail></Details>
     . . .